/**
 * 局部化工具
 * @param {*} locals 局部化的css映射
 */
export default function (locals) {
  /**
   * 局部化HTML字符串
   * @param {string} str 
   */
  var lh = function (str) {
    // 替换html中的id和class，请确保带有引号，多个class之间用空格隔开
    var reg = /((id|class)=['"])([\w- ]+)/g;
    str = str.replace(reg, function (kw, prefix, name, value) {
      value = value.split(/\s+/).map(function (key) {
        return locals[key] || key;
      }).join(' ');
      return prefix + value;
    });

    return str;
  };

  /**
   * 局部化css选择器字符串
   * @param {string} str 
   */
  var ls = function (str) {
    // 替换selector中的id和class
    var reg = /([#.])([\w-]+)/g;
    str = str.replace(reg, function (kw, prefix, value) {
      value = locals[value] || value;
      return prefix + value;
    });

    return str;
  };

  /**
   * 局部化HTML或选择器字符串
   * @param {string} str 
   */
  var ll = function (str) {
    return ls(lh(str));
  };
};
